package cn.kilo.domain.service.order;

import cn.kilo.domain.model.order.entity.OrderEntity;
import cn.kilo.domain.model.order.entity.StaffEntity;
import cn.kilo.domain.model.order.vo.OrderStatusVO;
import cn.kilo.domain.service.order.factory.DefaultFactory;

import java.util.List;
import java.util.Map;

/**
 * @author kilok
 * 为不同服务的任务分配对应的员工
 * 策略分配+建造者模式+抽象工厂模式
 */
public interface IStaffStrategyChain {

    List<OrderStatusVO> doJob(OrderEntity order);
    DefaultFactory.Role getRole();

    Map<String,Integer> getLeftStaff(OrderEntity order);

    // TODO: 2024/6/2 其实这里的成为员工（三种不同的员工）可以使用模板模式来解决，不同模板解决不同员工类型的数量是否合格问题 ，等之后在做修改
    boolean beStaff(StaffEntity staffEntity);
}
